def report(cls):
    def oncall(*args, **kwargs):
        print("主人，我要开始实例化对象了...")
        _ = cls(*args, **kwargs)
        print(f"主人，实例化完成啦，快夸夸我^o^，对象为：{_}")
        return _

    return oncall


# 使用类装饰器
@report
# @report 语法糖，相当于 c = report(c)
class C:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
        print("构造函数被调用啦～")


c = C(1, 2, 3)
# 主人，我要开始实例化对象了...
# 构造函数被调用啦～
# 主人，实例化完成啦，快夸夸我^o^，对象为：<__main__.C object at 0x10357ceb0>
print(c)
# <__main__.C object at 0x10357ceb0>


# 类装饰器的作用：在类被实例化对象之前对其进行拦截和干预
